perm filename FLSCH.MF[MF,DEK] blob sn#756287 filedate 1984-05-26 generic text, type T, neo UTF8
let xmult=xscaled; let ymult=yscaled;
def tracingall=tracingcommands:=3;
 tracingedges:=1; tracingtitles:=1; tracingequations:=1; tracingspecs:=1;
	tracingpens:=1; tracingchoices:=1; tracingstats:=2;
 tracingonline:=1;tracingoutput:=1;tracingmacros:=3; xyzzy:=1 enddef;
input bbase;
%sunrules;

N.height = 20 pt;
M.height = 30 pt;
S.height = 20 pt;

W.width = 20 pt;
M.width = 30 pt;
E.width = 20 pt;

pen hpen, vpen, medpen, smallpen;

%tracingall;
thick := 2pt; thin := .4pt;
hpen := pencircle  xmult thick  ymult thin;
vpen := pencircle  xmult thin  ymult thick;
medpen := pencircle scaled 2thin;
smallpen := pencircle scaled thin;

loose := .75;  tight := 2;	% tensions for loops

def sr (expr z,zz) =	% S-curve to right
	draw z{1,0} .. zz{1,0};
enddef;

def sd (expr z,zz) =	% S-curve down
	draw z{0,-1} .. zz{0,-1};
enddef;

def loopr (expr z,zz,zzz) =	% loop to right
	draw z{1,0} .. tension loose and tight .. zz{-1,0}
	 .. tension tight and loose .. zzz{1,0};
enddef;

def loopd (expr z,zz,zzz) =	% loop downward
	draw z{0,-1} .. tension loose and tight .. zz{0,1}
	 .. tension tight and loose .. zzz{0,-1};
enddef;


vardef char.N.M =
	defaultpen := hpen;
	sr( (0,N.height), (1/2 M.width,0) );
	sr( (1/2 M.width,0), (M.width,N.height) );

	defaultpen := medpen;
	loopr( (0,.2N.height), (.5M.width,.8N.height), (M.width,.2N.height) );

	defaultpen := smallpen;
	draw (0,.62N.height) .. (M.width,.62N.height);
enddef;


vardef char.N.E =
	defaultpen := smallpen;
	draw (0, N.height){1,0} .. (E.width, 0){0,-1};
	draw (0, .62N.height){1,0} .. (.62E.width, 0){0,-1};

	defaultpen := medpen;
	draw (0,.2N.height){1,0} .. tension loose and tight
	 .. (.6E.width,.6N.height){-1,1} .. tension tight and loose
	 .. (.2E.width,0){0,-1};
enddef;


vardef char.M.E =
	defaultpen := vpen;
	sd( (E.width,M.height), (0,1/2 M.height) );
	sd( (0,1/2 M.height), (E.width,0) );

	defaultpen := medpen;
	loopd( (.2E.width,M.height), (.8E.width,.5M.height), (.2E.width,0) );

	defaultpen := smallpen;
	draw (.62E.width,M.height) .. (.62E.width,0);
enddef;


vardef char.S.E =
	defaultpen := smallpen;
	draw (E.width,S.height){0,-1} ..  (0,0){-1,0};
	draw (.62E.width,S.height){0,-1} .. (0,.38S.height){-1,0};

	defaultpen := medpen;
	draw (.2E.width,S.height){0,-1} .. tension loose and tight
	 .. (.6E.width,.4S.height){1,1} .. tension tight and loose
	 .. (0,.8S.height){-1,0};
enddef;


vardef char.S.M =
	defaultpen := hpen;
	sr( (0,0), (1/2 M.width,S.height) );
	sr( (1/2 M.width,S.height), (M.width,0) );

	defaultpen := medpen;
	loopr( (0,.8S.height), (.5M.width,.2S.height), (M.width,.8S.height) );

	defaultpen := smallpen;
	draw (0,.38S.height) .. (M.width,.38S.height);
enddef;


vardef char.S.W =
	defaultpen := smallpen;
	draw (0, S.height){0,-1} .. (W.width, 0){1,0};
	draw (.38W.width,S.height){0,-1} .. (W.width, .38S.height){1,0};

	defaultpen := medpen;
	draw (.8W.width,S.height){0,-1} .. tension loose and tight
	 .. (.4W.width,.4S.height){-1,1} .. tension tight and loose
	 .. (W.width,.8S.height){1,0};
enddef;


vardef char.M.W =
	defaultpen := vpen;
	sd( (0,M.height), (W.width,1/2 M.height) );
	sd( (W.width,1/2 M.height), (0,0) );

	defaultpen := medpen;
	loopd( (.8W.width,M.height), (.2W.width,.5M.height), (.8W.width,0) );

	defaultpen := smallpen;
	draw (.38E.width,M.height) .. (.38E.width,0);
enddef;


vardef char.N.W =
	defaultpen := smallpen;
	draw (W.width,N.height){-1,0} ..  (0,0){0,-1};
	draw (W.width,.62N.height){-1,0} .. (.38W.width,0){0,-1};

	defaultpen := medpen;
	draw (W.width,.2N.height){-1,0} .. tension loose and tight
	 .. (.4W.width,.6N.height){1,1} .. tension tight and loose
	 .. (.8W.width,0){0,-1};
enddef;

test N.M;
%test N.E;
%test M.E;
%test S.E;
%test S.M;
%test S.W;
%test M.W;
%test N.W;


end